#ifndef GL_RENDER_STATE
#define GL_RENDER_STATE
#include "Interfaces/IRenderState.h"

namespace gengine
{
	namespace kernel
	{
		class GlRenderState :public RenderState
		{
		public:
			GlRenderState() {}
			 ~GlRenderState() {}
			bool EnableLighting        (bool enable) ;
			bool EnableDephtTest       (bool enable) ;
			bool EnableAlphaTest       (bool enable) ;
			bool EnableBlending        (bool enable) ;
			bool EnableStensilTest     (bool enable) ;
			bool EnableCulling         (bool enable) ;
			bool EnableDepthWrites     (bool enabled) ;
	        void BindTextureUnit        (int target,int id);
			void UnbindTextureUnit     (int target); 
			
			bool SetCullFace            (int mode)    ;
			bool SetFrontFace           (int mode)    ;
			bool SetPolygonModeFront    (int mode)    ;
			bool SetPolygonModeBack     (int mode)    ; 

			bool SetDepthFunc           (unsigned func)             ;
			bool SetAlphaFunc           (int alphaFunc, float ref ) ;
			bool SetBlendFunc           (int srcFunc, int dstFunc)  ;
	
			bool SetStencilFunc         (int func, int ref, unsigned mask) ;
			bool SetStencilOp           (int fail, int zfail, int zpass) ;
			bool SetStencilWrites       (unsigned mask) ;

		private:

		};
	}
}


#endif